// 局部作用域
/**
 * 函数体中声明的函数参数或变量的名称仅在声明它们的函数中可见。这意味着可以在不考虑其他函数中的变量名称的情况下命名函数中的局部变量。这有助于保持函数的独立性。
 * 尽可能在它们第一次使用时定义局部变量。
 */

#include <iostream>

using namespace std;

// 在函数体内定义的变量称为局部变量。
int add(int x, int y)
{
    int z{ x + y }; // z is a local variable

    return z;
}

// 函数参数通常也被认为是局部变量。
int add1(int x, int y) // function parameters x and y are local variables
{
    int z{ x + y };

    return z;
}

// 函数参数在进入函数时创建并初始化，函数体内的变量在定义时创建并初始化。
int add3(int x, int y) // x and y created and initialized here
{
    int z{ x + y }; // z created and initialized here

    return z;
}

// 局部变量在定义它的花括号集合的末尾以与创建顺序相反的顺序销毁(或者对于函数形参，在函数的末尾销毁)。
int add4(int x, int y)
{
    int z{ x + y };

    return z;
} // z, y, and x destroyed here

int main() {
    
    
    return 0;
}